#include <net/cm.h>

#ifndef _CM_BINCONGCTL_H
#define _CM_BINCONGCTL_H

#define CM_RTT_DEFAULT 1000	/* in milliseconds */
#define CM_BINCC_MAXBURST 4

extern void cmbincc_init(cm_congctl_t *cmcc);
extern void cmbincc_update(cm_congctl_t *cmbincc, int nsent, int nrecd, 
			   __u32 rtt, int lossmode);
extern void cmbincc_query(cm_congctl_t *cmbincc, double *bw, double *srtt, 
		       double *rttvar);
extern void cmbincc_notify(cm_congctl_t *cmbincc, int nsent);
extern void cmbincc_startup(cm_congctl_t *cmbincc, int nrecd, double rtt,
			    int lossmode);
void cmbincc_restart(cm_congctl_t *cmbincc, u32 now);
extern inline void cmbincc_decrease(cm_congctl_t *cmbincc, u32 now);
extern inline void cmbincc_increase(cm_congctl_t *cmbincc, int nrecd);
extern inline void cmbincc_update_rtt(cm_congctl_t *cmbincc, u32 rtt);
extern void cmbincc_startup(cm_congctl_t *cmbincc, int nrecd, double rtt, 
			    int lossmode);
extern void cmbincc_wakeup(cm_congctl_t *cmbincc);

#endif
